相信大家都在寫Java的時候很常遇到需要自己寫一堆Getter和Setter方法的時候吧?
Lombok的出現就是解救我們大家可以避免寫了很多冗長的程式碼,只要學會使用Lombok的annotation使用時機,就可以節省很多開發時間跟簡化你的程式碼。
pom.xml
新增以下設定,目前已經版本更新到1.18.34
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
</dependency>
安裝完畢之後就可以使用了喔!!
@Getter
@Setter
@Getter
註解用於自動生成字段的 getter 方法@Setter
註解用於自動生成字段的 setter 方法@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
但我們如果只用了Lombok annotation之後,我們的程式碼只需要簡化如下
@Getter
@Setter
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
}
@ToString
toString()
預設印出所有非static的欄位。@ToString
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
}
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
生成一個無參數的建構函數。@RequiredArgsConstructor
生成一個包含所有被 final 修飾的字段的建構函數。@AllArgsConstructor
註解生成一個包含所有字段的建構函數。@AllArgsConstructor
一定要記得搭配使用 @NoArgsConstructor
才不會發生不預期的錯誤喔!@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
//
Book book1 = new Book(1, "Hello World");
Book book2 = new Book(2, "Libary", "Alice");
}
@Builder
@Builder
可用於自動為我們的類別產生建構器。@AllArgsConstructor
@NoArgsConstructor
@Getter
@Builder
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue
@Column(name = "BOOK_ID")
private Integer bookId;
private String name;
@Column
private String author;
//
Book book = Book.builder()
.bookId(1)
.name("Iron")
.author("Winnie")
.build();
}
@Data
@Data
就是萬用大全,等於同時標註了:
@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
因為沒有包含@NoArgsConstructor
,所以也要記得加上喔!!!!
@Slf4j
@Slf4j
真的是個超好用的註解,平常沒有他的話,我們都需要自己在service自己宣告logger.class,透過註解我們可以直接生成**Slf4j **的來繼續log
@Service
@Slf4j
public class IronService {
...
}
透過剛剛的介紹,有沒有覺得Lombok真的的發明真的是拯救大家簡化了很多程式碼,真的建議一定要添加喔!